package Demo;

import java.util.Scanner;

// 定义演示程序的类
public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 创建一个扫描器对象，用于接收用户输入
        LinearList list1;
        LinearList list2;
        boolean isContinue = true;
        System.out.println("欢迎使用集合运算演示程序！"); // 打印欢迎信息
        System.out.println("请输入第一个集合，每个元素为一个小写字母，以空格分隔，以回车结束："); // 提示用户输入第一个集合
        list1 = inputList(sc);
        System.out.println("您输入的第一个集合是：" + list1); // 打印第一个集合
        System.out.println("请输入第二个集合,每个元素为一个小写字母，以空格分隔，以回车结束："); // 提示用户输入第二个集合
        list2 = inputList(sc);
        System.out.println("您输入的第二个集合是：" + list2); // 打印第二个集合
        while (isContinue) {
            System.out.println("请输入指令\n" +
                    "并集指令：union\n" +
                    "交集指令：intersection\n" +
                    "差集指令：difference\n" +
                    "退出：exit");
            String command = sc.nextLine().trim();


            switch (command) {
                case "union":
                    System.out.println("两个集合的并集是：" + LinearList.union(list1, list2)); // 打印并集
                    break;
                case "intersection":
                    System.out.println("两个集合的交集是：" + LinearList.intersection(list1, list2)); // 打印交集
                    break;
                case "difference":
                    System.out.println("第一个集合相对于第二个集合的差集是：" + LinearList.difference(list1, list2)); // 打印差集
                    System.out.println("第二个集合相对于第一个集合的差集是：" + LinearList.difference(list2, list1)); // 打印差集
                    break;
                case "exit":
                    isContinue = false;
                    break;
            }

        }
    }

    /**
     * 从控制台接收用户输入的集合
     * @param sc 扫描器对象
     * @return 用户输入的集合
     */
    public static LinearList inputList(Scanner sc) {
        String input = sc.nextLine(); // 接收用户输入的一行字符串
        String[] elements1 = input.split(" "); // 将字符串按空格分割成字符串数组
        LinearList list = new LinearList(); // 创建一个新的空线性表作为第一个集合
        for (String element : elements1) { // 遍历字符串数组中的每个元素
            if (element.length() == 1 && element.charAt(0) >= 'a' && element.charAt(0) <= 'z') {
                // 如果元素是一个小写字母，将其添加到第一个集合中（如果不存在）
                list.add(element.charAt(0));
            } else {
                // 否则，打印错误信息，并退出程序
                System.out.println("输入错误，只能输入小写字母！");

            }
        }
        return list;
    }
}